There are a variety of ways to implement searching methods and mechanisms in a client-server environment. For example, in a conventional client-server environment 10, such as that illustrated in FIG. 1, a user utilizes a user interface to enter a search term at a client device 12. The search term is then communicated over a network 14 to the server 16, where the search is executed. For example, the server 16 may execute a search, based on the search term entered by the user, for data stored on the data storage device 18. Consequently, the server 16 does the bulk of the processing at the time the search is requested. Moreover, latency is introduced into the system as the client 12 is forced to wait for the server 16 to process the search, and return results to the client 12 via the network 14 that may introduce significant delays.
In some client-server environments, it is essential that the latency be reduced to a minimum. For example, in the context of an electronic programming guide (EPG), it is essential that the client-side user interface respond rapidly to input by the user. For example, if a user enters the name, or title, of a particular show or movie during a search, the server needs to respond to the client rapidly with results that satisfy the search. Similarly, if a user is scrolling through a listing of currently showing titles, the user interface must be responsive quickly, or the user may become frustrated with perceived delays. Because there may be a significant number of client devices 12 accessing the server 16, the server must be capable of processing multiple requests rapidly.
To further complicate matters, the client device may have limited processing power. For example, system developers are often required to make tradeoffs between cost and performance when developing client devices. Accordingly, to reduce the cost of the client device, system developers often use cost effective components which limit processing power and storage capacity. In the context of such restraints, there exists a need for highly efficient searches with limited user-perceived latency on the client side.